#include "TestArbolEnArchivo.h"

#include "includes.h"
#include "../src/indices/arbol/BloqueInterno.h"
#include "../src/indices/arbol/BloqueHoja.h"
#include "../src/indices/arbol/Arbol.h"
#include "../src/FuncionesUtiles.h"
#include "TipoClaveString.h"

TestArbolEnArchivo::TestArbolEnArchivo() {


}

TestArbolEnArchivo::~TestArbolEnArchivo() {


}

void TestArbolEnArchivo::run() {

	this->testRaiz();
}


void TestArbolEnArchivo::testRaiz() {

	TipoClave* extractor = new TipoClaveString();

	system("rm -r -f ./ArbolArchivo/Arbol");
	Arbol arbol("./ArbolArchivo/Arbol",extractor,10,4);
	arbol.inicializar();
	/* Se espera que la raiz tenga al menos el doble del tamanio que un bloque normal*/
	cantBytes tamanioEsperado = BloqueArbol::calcularTamanio(20,4);
	cout << "esperado " << tamanioEsperado << endl;
	BloqueArbol* raiz = arbol.getRaiz();

	assert(raiz->getTamanio() == tamanioEsperado, "Test Tamanio Raiz");

	raiz->getClaves().push_back(Key(new ClaveString("pepe")));
	raiz->getClaves().push_back(Key(new ClaveString("coco")));

	arbol.guardarRaiz();
//	arbol.cargarRaiz();

	raiz = arbol.getRaiz();

	assert(Key(new ClaveString("pepe")) == raiz->getClaves()[0],"Test Clave Raiz 1");
	assert(Key(new ClaveString("coco")) == raiz->getClaves()[1],"Test Clave Raiz 2");


}
